﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using DTOMedicalProject;

namespace MRAccesoDatos
{
    public class clsTipoUsuario
    {
        MRAccesoDatosDataContext db = new MRAccesoDatosDataContext();

        public clsTipoUsuario()
        {
            
        }

        public List<DTOTipoUsuario> ObtenerTipoUsuario()
        {
            
            int i = 0;
            List <DTOTipoUsuario> dtipousuarios = new List<DTOTipoUsuario>();

            try
            {

                var tipousuario = (from tp in db.Tipo_Usuarios
                                   select tp).ToList();

                foreach (Tipo_Usuario tpUsuario in tipousuario)
                {
                    dtipousuarios.Add(new DTOTipoUsuario());
                    dtipousuarios[i].Cod_TipoUsuario = tpUsuario.Cod_Tipo_Usuario;
                    dtipousuarios[i].Descripcion = tpUsuario.Descripcion;


                    i++;
                }

               
            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error obteniendo los datos. " + ex.Message);
            }

            return dtipousuarios;

        }

        public DTORespuesta InsertaTipoUsuario(DTOTipoUsuario tpusuario)
        {
            DTORespuesta resp = new DTORespuesta();
            Tipo_Usuario tipousuario = new Tipo_Usuario();

            try
            {

                tipousuario.Cod_Tipo_Usuario = tpusuario.Cod_TipoUsuario;
                tipousuario.Descripcion = tpusuario.Descripcion;

                db.Tipo_Usuarios.InsertOnSubmit(tipousuario);
                db.SubmitChanges();

                resp.Mensaje = "Los datos fueron insertados correctamente";
                resp.Codigo = 100;

                return resp;
            }
            catch (Exception ex)
            {
                resp.Mensaje = ex.Message;
                resp.Codigo = -100;

                return resp;

            }
        }

        public DTORespuesta ActualizarTipoUsuario(DTOTipoUsuario tpusuario)
        {
            DTORespuesta resp = new DTORespuesta();
            

            try
            {
                
                Tipo_Usuario tipousuario = db.Tipo_Usuarios.Single(p => p.Cod_Tipo_Usuario == tpusuario.Cod_TipoUsuario);
                tipousuario.Cod_Tipo_Usuario = tpusuario.Cod_TipoUsuario;
                tipousuario.Descripcion = tpusuario.Descripcion;



                resp.Codigo = 102;
                resp.Mensaje = "Los datos fueron Actualizados correctamente.";
                return resp;

            }
            catch (Exception ex)
            {
                resp.Mensaje = ex.Message;
                resp.Codigo = -102;
                return resp;
                
            }

        }

        public DTORespuesta EliminarTipoUsuario(DTOTipoUsuario tpusuario)
        {
            DTORespuesta resp = new DTORespuesta();

            try
            {
                var tipouser = db.Tipo_Usuarios.Single(p => p.Cod_Tipo_Usuario == tpusuario.Cod_TipoUsuario);
                db.Tipo_Usuarios.DeleteOnSubmit(tipouser);
                db.SubmitChanges();

                resp.Codigo = 101;
                resp.Mensaje = "Los datos fueron eliminados correctamente.";
                return resp;   
            }
            catch (Exception ex)
            {
                resp.Mensaje = ex.Message;
                resp.Codigo = -101;
                return resp;
            }
        }

    }
}
